#include <mysql/mysql.h>
#include<stdio.h>
#include<string.h>
#include "db.h"
#define C_DB_SERVER_IP   "127.0.0.1"
#define C_DB_SERVER_PORT 3306
#define C_DB_USERNAME    "root"
#define C_DB_PASSWORD    "root"
#define C_DB_DEFAULT_DB  "cdb"

//插入
int c_db_insert(MYSQL *mysql, char *sql)
{
    if(mysql == NULL)
    {
        printf("%s",mysql_error(mysql));
        return -1;
    }
    if(mysql_real_query(mysql,sql,strlen(sql)))
    {
        printf("mysql_real_query : %s\n",mysql_error(mysql));
        return -2;
    }
    return 1;
}

//查询
int loginSelect(MYSQL *mysql,char *sql)
{
    if(mysql == NULL)
    {
        printf("%s",mysql_error(mysql));
        return -1;
    }
    //mysql_real_query是操作的关键 参数分别是 mysql管道,sql语句,sql语句长度
    //mysql_real_query 返回0表示成功
    if(mysql_real_query(mysql,sql,strlen(sql)))
    {
        printf("mysql_real_query : %s\n",mysql_error(mysql));
        return -2;
    }

    //把查到的数据存储在内存中
    //mysql_store_result(mysql)会返回一个MYSQL_RES类型的指针，存储查询sql语句运行的结果
    MYSQL_RES *res = mysql_store_result(mysql);
    if(res == NULL)
    {
        printf("mysql_store_result : %s",mysql_error(mysql));
        return -3;
    }
    //获取列的个数
    int rows = 0;
    rows = mysql_num_rows(res);

    MYSQL_ROW row;
    
    return rows;
}

//更新
int c_db_update(MYSQL *mysql,char *sql)
{
    if(mysql == NULL)
    {
        printf("%s",mysql_error(mysql));
        return -1;
    }
    //mysql_real_query是操作的关键 参数分别是 mysql管道,sql语句,sql语句长度
    //mysql_real_query 返回0表示成功
    if(mysql_real_query(mysql,sql,strlen(sql)))
    {
        printf("mysql_real_query : %s\n",mysql_error(mysql));
        return -2;
    }
    return 0;
}

//删除
int c_db_delete(MYSQL *mysql,char *sql)
{
        if(mysql == NULL)
    {
        printf("%s",mysql_error(mysql));
        return -1;
    }
    //mysql_real_query 是操作的关键 参数分别是 mysql管道,sql语句,sql语句长度
    //mysql_real_query 返回0表示成功
    if(mysql_real_query(mysql,sql,strlen(sql)))
    {
        printf("mysql_real_query : %s\n",mysql_error(mysql));
        return -2;
    }
    return 0;
}


MYSQL* initMysql(MYSQL *mysql){
    MYSQL *conn = mysql_init(mysql);
    if(conn == NULL)
    {
        printf("mysql_init : %s\n",mysql_error(mysql));
    }
    // mysql_real_connect 若返回0表示则表示连接失败
    if(!mysql_real_connect(mysql,
	C_DB_SERVER_IP, C_DB_USERNAME, 
    C_DB_PASSWORD, C_DB_DEFAULT_DB, 
    C_DB_SERVER_PORT,NULL, 0))
    {
        printf("mysql_real_connect : %s\n",mysql_error(mysql));
        return NULL;
    } 
    return conn;
}

